﻿
namespace BLPicker
{
    using System.Diagnostics.Contracts;
    using BLPicker.CodeContracts;

    [ContractClass(typeof(BusinessLayerProxyFactoryContract))]
    /// <summary>
    /// Interface for getting instance of business layer proxy.
    /// </summary>
    public interface IBusinessLayerProxyFactory
    {

        /// <summary>
        /// Gets the instance of business layer proxy.
        /// </summary>
        /// <typeparam name="TBusinessLayer">The type of the business layer.</typeparam>
        /// <param name="businessLayerFactory">Factory for getting instance of business layer from dependency container.</param>
        /// <returns>The instance of business layer proxy.</returns>
        TBusinessLayer GetProxy<TBusinessLayer>(IBusinessLayerFactory<TBusinessLayer> businessLayerFactory);

    }


}
